package com.yiwei.ydd.api;

import io.reactivex.Observable;

import com.yiwei.ydd.activity.AboutUsActivity;
import com.yiwei.ydd.api.bean.BagOrderBean;
import com.yiwei.ydd.api.bean.BankBinBean;
import com.yiwei.ydd.api.bean.BankDeleteBean;
import com.yiwei.ydd.api.bean.BanksAddBean;
import com.yiwei.ydd.api.bean.BindOrderOilCardBean;
import com.yiwei.ydd.api.bean.BirthDayBean;
import com.yiwei.ydd.api.bean.BuyLevelBean;
import com.yiwei.ydd.api.bean.CommissionDetailBean;
import com.yiwei.ydd.api.bean.CouponListBean;
import com.yiwei.ydd.api.bean.IconSetBean;
import com.yiwei.ydd.api.bean.IdBean;
import com.yiwei.ydd.api.bean.InitAppBean;
import com.yiwei.ydd.api.bean.InviteCheckBean;
import com.yiwei.ydd.api.bean.LevelInfoBean;
import com.yiwei.ydd.api.bean.LoginBean;
import com.yiwei.ydd.api.bean.MesgDeleteBean;
import com.yiwei.ydd.api.bean.MesgListBean;
import com.yiwei.ydd.api.bean.ModifyCheckCodeBean;
import com.yiwei.ydd.api.bean.ModifyResetBean;
import com.yiwei.ydd.api.bean.ModifySendBean;
import com.yiwei.ydd.api.bean.MoneyApplyBean;
import com.yiwei.ydd.api.bean.MyOrderListBean;
import com.yiwei.ydd.api.bean.NicknameBean;
import com.yiwei.ydd.api.bean.OilcardAddBean;
import com.yiwei.ydd.api.bean.OilcardAgencyCreateBean;
import com.yiwei.ydd.api.bean.OilcardDefaultBean;
import com.yiwei.ydd.api.bean.OilcardDeleteBean;
import com.yiwei.ydd.api.bean.OilcardEditBean;
import com.yiwei.ydd.api.bean.OrderDeleteBean;
import com.yiwei.ydd.api.bean.OrderDetailBean;
import com.yiwei.ydd.api.bean.PageBean;
import com.yiwei.ydd.api.bean.PagesDetailBean;
import com.yiwei.ydd.api.bean.PayPassSetBean;
import com.yiwei.ydd.api.bean.PayPassVerifyBean;
import com.yiwei.ydd.api.bean.PaymentBean;
import com.yiwei.ydd.api.bean.PaymentPayBean;
import com.yiwei.ydd.api.bean.RechargeDetailBean;
import com.yiwei.ydd.api.bean.RechargeInstantOrderBean;
import com.yiwei.ydd.api.bean.RechargeRecordBean;
import com.yiwei.ydd.api.bean.RechargeTermDetailBean;
import com.yiwei.ydd.api.bean.RechargeTermOrderBean;
import com.yiwei.ydd.api.bean.SetInviteBean;
import com.yiwei.ydd.api.bean.SuggestSetBean;
import com.yiwei.ydd.api.bean.TodayPriceBean;
import com.yiwei.ydd.api.bean.UploadImgBean;
import com.yiwei.ydd.api.bean.UserSexBean;
import com.yiwei.ydd.api.bean.VipComboBuyBean;
import com.yiwei.ydd.api.bean.VipOrderDetailBean;
import com.yiwei.ydd.api.bean.WithdrawDetailBean;
import com.yiwei.ydd.api.model.AboutUsModel;
import com.yiwei.ydd.api.model.AddressModel;
import com.yiwei.ydd.api.model.ArticleExplainModel;
import com.yiwei.ydd.api.model.BagOrderModel;
import com.yiwei.ydd.api.model.BankBinModel;
import com.yiwei.ydd.api.model.BankTypesListModel;
import com.yiwei.ydd.api.model.BanksListModel;
import com.yiwei.ydd.api.model.BuyLevelModel;
import com.yiwei.ydd.api.model.CashBackIndexModel;
import com.yiwei.ydd.api.model.CashBackListsModel;
import com.yiwei.ydd.api.model.ComboListModel;
import com.yiwei.ydd.api.model.CommissionBasicModel;
import com.yiwei.ydd.api.model.CommissionDetailModel;
import com.yiwei.ydd.api.model.CommissionListModel;
import com.yiwei.ydd.api.model.CouponListModel;
import com.yiwei.ydd.api.model.IndexDatasModel;
import com.yiwei.ydd.api.model.IndexModel;
import com.yiwei.ydd.api.model.IndexUserLogModel;
import com.yiwei.ydd.api.model.InitAppModel;
import com.yiwei.ydd.api.model.InviteCheckModel;
import com.yiwei.ydd.api.model.LeveListModel;
import com.yiwei.ydd.api.model.LevelInfoModel;
import com.yiwei.ydd.api.model.LoginModel;
import com.yiwei.ydd.api.model.ManagerDetailModel;
import com.yiwei.ydd.api.model.MesgListModel;
import com.yiwei.ydd.api.model.ModifyCheckCodeModel;
import com.yiwei.ydd.api.model.MoneyCheckModel;
import com.yiwei.ydd.api.model.MoneyIndexModel;
import com.yiwei.ydd.api.model.MoneyListsModel;
import com.yiwei.ydd.api.model.MsgIndexModel;
import com.yiwei.ydd.api.model.MyOrderListModel;
import com.yiwei.ydd.api.model.OilCardAgencyListModel;
import com.yiwei.ydd.api.model.OilcardListModel;
import com.yiwei.ydd.api.model.OilcardTypeModel;
import com.yiwei.ydd.api.model.OrderDetailModel;
import com.yiwei.ydd.api.model.PagesDetailModel;
import com.yiwei.ydd.api.model.PaymentListModel;
import com.yiwei.ydd.api.model.PaymentPayModel;
import com.yiwei.ydd.api.model.PopBigGifModel;
import com.yiwei.ydd.api.model.PopLevelUpModel;
import com.yiwei.ydd.api.model.QrcodeLinkModel;
import com.yiwei.ydd.api.model.RechargeDetailModel;
import com.yiwei.ydd.api.model.RechargeInstantModel;
import com.yiwei.ydd.api.model.RechargeInstantOrderModel;
import com.yiwei.ydd.api.model.RechargeRecordModel;
import com.yiwei.ydd.api.model.RechargeTermDetailModel;
import com.yiwei.ydd.api.model.RechargeTermModel;
import com.yiwei.ydd.api.model.RechargeTermOrderModel;
import com.yiwei.ydd.api.model.ResetQrcodeModel;
import com.yiwei.ydd.api.model.SetInviteCodeModel;
import com.yiwei.ydd.api.model.SettingCustomerModel;
import com.yiwei.ydd.api.model.ShareIndexModel;
import com.yiwei.ydd.api.model.ShareInfoModel;
import com.yiwei.ydd.api.model.ShareRegisterLinkModel;
import com.yiwei.ydd.api.model.TodayPriceModel;
import com.yiwei.ydd.api.model.UploadImgModel;
import com.yiwei.ydd.api.model.UserInfoModel;
import com.yiwei.ydd.api.model.UserInviteInfoModel;
import com.yiwei.ydd.api.model.VipComboBuyModel;
import com.yiwei.ydd.api.model.VipComboRecordModel;
import com.yiwei.ydd.api.model.VipOrderDeleteModel;
import com.yiwei.ydd.api.model.VipOrderDetailModel;
import com.yiwei.ydd.api.model.VipOrderListModel;
import com.yiwei.ydd.api.model.WithdrawDetailModel;

import retrofit2.http.Body;
import retrofit2.http.POST;

/**
 * Created by xsooy-pc on 2017/8/24.
 */

public interface ApiService {
    //0.1.1、发送短信
    @POST("sms/send")
    Observable<ResponseModel> getSmsSend(@Body ModifySendBean item);

    //0.1.2、验证短信验证码
    @POST("sms/checkcode")
    Observable<ModifyCheckCodeModel> getSmsCheck(@Body ModifyCheckCodeBean item);

    //12.1、省、市、区获取
    @POST("address/province")
    Observable<AddressModel> getProvince();

    //12.1、省、市、区获取
    @POST("address/cities")
    Observable<AddressModel> getCity(@Body IdBean item);

    //12.1、省、市、区获取
    @POST("address/districts")
    Observable<AddressModel> getArea(@Body IdBean item);


    //1、初始化
    @POST("init")
    Observable<InitAppModel> getInitInfo(@Body InitAppBean item);

    //1、初始化
    @POST("index")
    Observable<IndexModel> getIndex();

    //2.2、地区油价
    @POST("oil/price/today")
    Observable<TodayPriceModel> getTodayPrice(@Body TodayPriceBean item);

    //2.3、数据展示
    @POST("index/datas")
    Observable<IndexDatasModel> getIndexDatas();

    //2.4、油多多产品说明
    @POST("/articles/explain")
    Observable<ArticleExplainModel> getArticleExplain();

    //2.5、用户动态记录数据
    @POST("/index/user/logs")
    Observable<IndexUserLogModel> getIndexUserLog();

    @POST("user/login")
    Observable<LoginModel> getLogin(@Body LoginBean item);

    @POST("user/logout")
    Observable<ResponseModel> getLogout();

    //4.11使用原手机号码获取验证码
    @POST("modify-phone/send")
    Observable<ResponseModel> getModifySend(@Body ModifySendBean item);

    //4.12、验证原手机号码验证码
    @POST("modify-phone/checkcode")
    Observable<ModifyCheckCodeModel> getModifyCheckCode(@Body ModifyCheckCodeBean item);

    //4.13、修改手机号码
    @POST("modify-phone/reset")
    Observable<ResponseModel> getModifyReset(@Body ModifyResetBean item);

    //4.2、获取用户信息
    @POST("user/info")
    Observable<UserInfoModel> getUserInfo();

    //4.3、修改昵称
    @POST("user/reset/nickname")
    Observable<ResponseModel> getNickname(@Body NicknameBean item);

    //4.4、修改性别
    @POST("user/reset/sex")
    Observable<ResponseModel> getUserSex(@Body UserSexBean item);

    //4.5、修改生日
    @POST("user/reset/birthday")
    Observable<ResponseModel> getBirthday(@Body BirthDayBean item);

    //4.6、会员等级
    @POST("user/level/lists")
    Observable<LeveListModel> getLevelList();

    //4.7、获取等级信息
    @POST("user/level/getinfo")
    Observable<LevelInfoModel> getLevelInfo(@Body LevelInfoBean item);

    //4.8、我的订单
    @POST("order/lists")
    Observable<MyOrderListModel> getOrderList(@Body MyOrderListBean item);

    //4.9、订单详情
    @POST("order/details")
    Observable<OrderDetailModel> getOrderDetail(@Body OrderDetailBean item);

    //4.10、修改头像
    @POST("user/reset/icon")
    Observable<ResponseModel> getIconSet(@Body IconSetBean item);

    //4.11.1、会员可购买套餐
    @POST("/level/combo/lists")
    Observable<ComboListModel> getVipComboLists();

    //4.11.2、升级记录
    @POST("level/combo/record")
    Observable<VipComboRecordModel> getVipComboRecord();

    //4.11.3、创建升级订单
    @POST("level/combo/buy")
    Observable<VipComboBuyModel> getVipComboBuy(@Body VipComboBuyBean item);

    //4.11.4、查看我的升级订单列表
    @POST("level/ord/lists")
    Observable<VipOrderListModel> getVipOrderList(@Body PageBean item);

    //4.11.5、查看升级订单详情
    @POST("level/ord/detail")
    Observable<VipOrderDetailModel> getVipOrderDetail(@Body VipOrderDetailBean item);

    //4.11.6、删除失效订单
    @POST("level/ord/del")
    Observable<VipOrderDeleteModel> getVipOrderDelete(@Body VipOrderDetailBean item);

    //4.12、油卡代办订单创建
    @POST("oilcard/ord/create")
    Observable<BagOrderModel> getOilcardAgencyCrete(@Body OilcardAgencyCreateBean item);

    //4.13、我的油卡代办订单列表
    @POST("oilcard/ord/list")
    Observable<OilCardAgencyListModel> getOilcardAgencyList(@Body PageBean item);

    //4.14、获取分享信息
    @POST("/index/share/info")
    Observable<ShareInfoModel> getShareInfo();

    //4.15、删除失效加油订单
    @POST("order/del")
    Observable<ResponseModel> getOrderDelete(@Body OrderDeleteBean item);

    //4.16、绑定油卡
    @POST("order/bind/oilcard")
    Observable<ResponseModel> getBindOrderOilCard(@Body BindOrderOilCardBean item);

    //5.1、即时充值列表
    @POST("recharge/instant/combo")
    Observable<RechargeInstantModel> getRechargeInstant();

    //5.2、即时充值（提交订单）
    @POST("recharge/instant/buy")
    Observable<RechargeInstantOrderModel> getRechargeInstantOrder(@Body RechargeInstantOrderBean item);

    //5.3、分期充值列表
    @POST("recharge/term/combo")
    Observable<RechargeTermModel> getRechargeTerm();

    //5.4、分期充值（提交订单）
    @POST("recharge/term/buy")
    Observable<RechargeTermOrderModel> getRechargeTermOrder(@Body RechargeTermOrderBean item);

    //5.5、分期充值详细
    @POST("recharge/term/details")
    Observable<RechargeTermDetailModel> getRechargeTermDetail(@Body RechargeTermDetailBean item);

    //5.6、会员等级升级（提交订单）
    @POST("level/combo/buy")
    Observable<BuyLevelModel> getBuyLevel(@Body BuyLevelBean item);

    //6.1、油卡类型
    @POST("oilcard/type")
    Observable<OilcardTypeModel> getOilCardType();

    //6.2、添加油卡
    @POST("oilcard/add")
    Observable<ResponseModel> getOilcardAdd(@Body OilcardAddBean bean);

    //6.3、油卡列表
    @POST("oilcard/lists")
    Observable<OilcardListModel> getOilcardList();

    //6.4、编辑油卡
    @POST("oilcard/edit")
    Observable<OilcardListModel> getOilcardEdit(@Body OilcardEditBean item);

    //6.5、删除油卡
    @POST("oilcard/delete")
    Observable<ResponseModel> getOilcardDelete(@Body OilcardDeleteBean item);

    //6.6、设置默认油卡
    @POST("/oilcard/set/default")
    Observable<ResponseModel> getOilcardDefault(@Body OilcardDefaultBean item);

    //7.1、优惠券列表
    @POST("coupon/lists")
    Observable<CouponListModel> getCouponList(@Body CouponListBean bean);

    //    //7.2、新手礼包弹框
    @POST("pop/coupon/biggif")
    Observable<PopBigGifModel> getPopBigGif();

    //8.1、支付列表
    @POST("payment/lists")
    Observable<PaymentListModel> getPaymentList();

    //8.2、支付
    @POST("payment/pay")
    Observable<PaymentPayModel> getPaymentPay(@Body PaymentPayBean item);

    //8.3、余额支付
    @POST("payment/pay/bag")
    Observable<ResponseModel> getBagPayment(@Body PaymentBean item);

    //8.4、设置支付密码
    @POST("money/set/pay/password")
    Observable<ResponseModel> getPayPassSet(@Body PayPassSetBean item);

    //8.5、验证支付密码
    @POST("money/verify/pay/password")
    Observable<ResponseModel> getPayPassVerify(@Body PayPassVerifyBean item);

    //9.1、佣金明细首页
    @POST("commission/basic")
    Observable<CommissionBasicModel> getCommissionBasic();

    //9.2、佣金列表
    @POST("commission/lists")
    Observable<CommissionListModel> getCommissionList(@Body PageBean item);

    //9.3、佣金详情
    @POST("commission/details")
    Observable<CommissionDetailModel> getCommissionDetails(@Body CommissionDetailBean item);

    //10.1、银行列表
    @POST("banks")
    Observable<BankTypesListModel> getBanksTypeLists();

    //10.2、bin码查询
    @POST("/banks/bin")
    Observable<BankBinModel> getBankBin(@Body BankBinBean item);

    //10.3、添加银行卡
    @POST("banks/add")
    Observable<ResponseModel> getBanksAdd(@Body BanksAddBean item);

    //10.4、银行卡列表
    @POST("/banks/lists")
    Observable<BanksListModel> getBanksLists();

    //10.5、删除银行卡
    @POST("banks/delete")
    Observable<ResponseModel> getBanksDelete(@Body BankDeleteBean item);

    //11.1、消息中心首页
    @POST("/mesg/index")
    Observable<MsgIndexModel> getMesgIndex();

    //11.2、消息列表
    @POST("/mesg/lists")
    Observable<MesgListModel> getMesgLists(@Body MesgListBean bean);

    //11.3、删除消息
    @POST("/mesg/del")
    Observable<ResponseModel> getMesgDelete(@Body MesgDeleteBean bean);

    //12.1、首页数据
    @POST("cashback/index")
    Observable<CashBackIndexModel> getCashBackIndex();

    //12.2、套餐明细列表
    @POST("cashback/lists")
    Observable<CashBackListsModel> getCashBackLists(@Body PageBean bean);

    //12.3、充值记录
    @POST("cashback/recharge/record")
    Observable<RechargeRecordModel> getRechargeRecord(@Body RechargeRecordBean bean);

    //13.1、钱包首页数据
    @POST("money/index")
    Observable<MoneyIndexModel> getMoneyIndex();


    //13.2、检查是否有提现申请
    @POST("money/check")
    Observable<MoneyCheckModel> getMoneyCheck();


    //13.3、申请提现
    @POST("money/apply")
    Observable<ResponseModel> getMoneyApply(@Body MoneyApplyBean bean);

    //13.4、交易明细列表
    @POST("money/lists")
    Observable<MoneyListsModel> getMoneyLists(@Body PageBean bean);

    //13.5、提现详情
    @POST("money/detail")
    Observable<WithdrawDetailModel> getWithdrawDetail(@Body WithdrawDetailBean bean);

    //13.6、钱包充值
    @POST("bag/order")
    Observable<BagOrderModel> getBagOrder(@Body BagOrderBean bean);

    //13.7、余额充值详情
    @POST("recharge/money/detail")
    Observable<RechargeDetailModel> getRechargeDetail(@Body RechargeDetailBean bean);

    //13.8、客服扣除详细
    @POST("money/manager/detail")
    Observable<ManagerDetailModel> getManagerDetail(@Body WithdrawDetailBean bean);

    //14.1、上传图片
    @POST("upload/image")
    Observable<UploadImgModel> getUploadImage(@Body UploadImgBean bean);


    //16.2、意见反馈
    @POST("setting/proposal")
    Observable<ResponseModel> getSuggestSet(@Body SuggestSetBean bean);

    //16.3、关于我们
    @POST("setting/about")
    Observable<AboutUsModel> getAboutUs();

    //19.1、会员升级弹框
    @POST("pop/levelup")
    Observable<PopLevelUpModel> getPopLevelUp();

    //25.1、获取邀请有礼首页链接
    @POST("invite/share/index")
    Observable<ShareIndexModel> getShareIndex();

    //25.2、检查邀请人信息
    @POST("invite/check")
    Observable<InviteCheckModel> getInviteCheck(@Body InviteCheckBean item);

    //25.3、设置邀请人
    @POST("user/set/invite")
    Observable<ResponseModel> getSetInvite(@Body SetInviteBean item);

    //25.4、生成邀请码
    @POST("user/create-invitecode")
    Observable<SetInviteCodeModel> getSetInvitecode();


    //25.5、重置邀请二维码
    @POST("user/reset-qrcode")
    Observable<ResetQrcodeModel> getResetQrcode();

    //25.6、获取邀请二维码链接
    @POST("user/qrcode/link")
    Observable<QrcodeLinkModel> getQrcodeLink();

    //25.7、获取用户邀请注册链接
    @POST("user/share/register/link")
    Observable<ShareRegisterLinkModel> getShareRegisterLink();

    //25.5、我的邀请人信息
    @POST("user/invite/info")
    Observable<UserInviteInfoModel> getUserInviteInfo();

    //16.1、客服中心
    @POST("/setting/customer")
    Observable<SettingCustomerModel> getSettingCustomer();

    //17、协议&说明
    @POST("/pages/detail")
    Observable<PagesDetailModel> getPagesDetail(@Body PagesDetailBean item);
}
